A distributed application, such as a client-server application or an enterprise application, can be built according to a Model-View-Controller (“MVC”) design pattern. According to the MVC design pattern, an application is separated into three layers: (1) a model layer; (2) a view layer; and (3) a controller layer. The model layer handles interactions with a data source and runs the business logic in the application. The view layer handles the user interface portion of the application. The view layer controls the appearance and layout of the user interface, and further controls how a user interacts with the application. The controller layer manages the application flow and acts as an interface between the model layer and the view layer. The controller layer controls a user's navigation of the application. In certain applications, the model layer can be split into two layers; the business services layer and the model layer. Like the model layer in the three-layer scenario, the business services layer of the four-layer scenario handles interactions with a data source and runs the business logic in the application. The model layer of the four-layer scenario provides an abstraction layer on top of the business services layer, enabling the view layer and controller layer to interface with different implementations of business services in a consistent way. If implemented this way, the view layer and the controller layer do not know (and do not need to know) the specific implementations of the various business services.
In a distributed application using the MVC architecture, one of the most expensive operations involved is retrieving data from the data store in the model layer. A slow model layer can impact the time it takes to render the user interface of the application and to display the data retrieved from the data store within the user interface, and can result in a poor usability experience for a user viewing the user interface in a client, whether the client is a client application (i.e., thick client) and the user interface is a screen of the client application, or whether the client is a web browser (i.e., thin client) and the user interface is a web page that is navigated to by the web browser. Furthermore, another expensive operation can be displaying an extremely large amount of data within the user interface of the application.